package day1

import org.junit.Test
import java.util.LinkedList
import kotlin.test.assertEquals

class Add {
    private fun add(l1: LinkedList<Int>, l2: LinkedList<Int>): LinkedList<Int> {
        val num1=l1.reversed().joinTo(StringBuilder(), "").toString().toInt()
        val num2=l2.reversed().joinTo(StringBuilder(), "").toString().toInt()
        val result=LinkedList<Int>()
        (num1+num2).toString().reversed().forEach {
            result.add(it.toString().toInt())
        }
        return result
    }

    @Test
    fun test1(){
        val l1=LinkedList<Int>()
        l1.add(2)
        l1.add(4)
        l1.add(3)
        val l2=LinkedList<Int>()
        l2.add(5)
        l2.add(6)
        l2.add(4)
        val result= Add().add(l1,l2)
        assertEquals("[7, 0, 8]",result.toString())
    }

    @Test
    fun test2(){
        val l1=LinkedList<Int>()
        l1.add(0)
        val l2=LinkedList<Int>()
        l2.add(0)
        val result= Add().add(l1,l2)
        assertEquals("[0]",result.toString())
    }

    @Test
    fun test3(){
        val l1=LinkedList<Int>()
        l1.add(9)
        l1.add(9)
        l1.add(9)
        l1.add(9)
        l1.add(9)
        l1.add(9)
        l1.add(9)
        val l2=LinkedList<Int>()
        l2.add(9)
        l2.add(9)
        l2.add(9)
        l2.add(9)
        val result= Add().add(l1,l2)
        assertEquals("[8, 9, 9, 9, 0, 0, 0, 1]",result.toString())
    }
}